SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO










CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_Q34]
/*-------------------------------------------------------------------*/
/*----- Empresa           : OFISIS S.A.                          ----*/
/*----- Cliente           : OFISIS S.A.                          ----*/
/*----- Sistema           : Contabilidad                         ----*/
/*----- Modulo            : Empresa                              ----*/
/*----- Programa          : Reporte Comprobante Retencion        ----*/
/*----- Nombre            : SP_TXMVTO_CNTB_Q30                   ----*/
/*----- Script            : TXMVTO_CNTB                          ----*/
/*----- Desarrollado por  : Martin Garcia Farfan                 ----*/
/*----- Fecha             : 29/05/2002                           ----*/
/*----- Base de Datos     : MS SQL Server                        ----*/
/*----- Version BD        : 8.0                                  ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Modificado 1 por  :  Marco Acua Paredes                            ----*/
/*----- Fecha Modifica    :  03/10/2002                                    ----*/
/*----- Detalle Modifica  :    Nueva Versi?n                                  ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Drop proc SP_TXMVTO_CNTB_Q34                        ----*/
/*----- Grant all on SP_TXMVTO_CNTB_Q34 to PUBLIC                ----*/
/*----- Exec SP_TXMVTO_CNTB_Q34 '01', 1, '001', '020', 2002, 8, '0000000025', 'P', '00000000008' --*/
/*-------------------------------------------------------------------*/
@ISCO_EMPR       TD_VC_002,
@INNU_CNTB_EMPR  TD_IN_001,
@ISCO_UNID_CNTB  TD_VC_003,
@ISCO_OPRC_CNTB  TD_VC_003,
@INNU_ANNO       TD_IN_004_ANNO,
@INNU_MESE       TD_IN_002_MESE,
@ISNU_ASTO       TD_VC_010,
@ISTI_AUXI_EMPR    TD_VC_001,
@ISCO_AUXI_EMPR  TD_VC_020
As

Declare
@CSTI_DOCU       TD_VC_003,
@CSNU_DOCU       TD_VC_020,
@CDFE_DOCU       TD_DT_001,
@CNIM_MVTO_CNTB  TD_NU_016_004,
@CNIM_MVTO_RETE  TD_NU_016_004,
@VSNO_AUXI       TD_VC_050,
@VSNU_RUCS       TD_VC_020,
@VSST_SERI       TD_VC_001,
@VSNU_SERI       TD_VC_010,
@VSNU_DOCU       TD_VC_020,
@VNNU_MAXI_FILA  TD_IN_001,
@VNNU_CONT       TD_IN_001,
@VNNU_DIFE       TD_IN_001,
@VNNU_LONG_SERI  TD_IN_001,
@VNNU_SECU       TD_IN_002

Create table #TWMVTO_CNTB_Q30
(NU_SECU         Integer       NULL,
 TI_AUXI_EMPR    Varchar(01)   NULL,
 CO_AUXI_EMPR    Varchar(20)   NULL,
 NO_AUXI         Varchar(80)   NULL,
 NU_RUCS         Varchar(20)   NULL,
 TI_DOCU         Varchar(03)   NULL,
 NU_SERI         Varchar(10)   NULL,
 NU_DOCU         Varchar(20)   NULL,
 FE_DOCU         DateTime      NULL,
 IM_MVTO_PAGO    Numeric(16,4) NULL,
 IM_MVTO_RETE    Numeric(16,4) NULL)

-- Obtengo el nombre del Proveedor
Select @VSNO_AUXI = NO_AUXI,
       @VSNU_RUCS = NU_RUCS
 From TMAUXI_EMPR
 Where CO_EMPR = @ISCO_EMPR
  and TI_AUXI_EMPR = @ISTI_AUXI_EMPR
  and CO_AUXI_EMPR = @ISCO_AUXI_EMPR

Select @VNNU_MAXI_FILA = 0
Select @VNNU_CONT = 0
Select @VNNU_DIFE = 0
Select @VNNU_LONG_SERI = 0
Select @VNNU_SECU = 0

Declare CU_TXMVTO_CNTB_Q30_1 Cursor
 For
  Select TI_DOCU, NU_DOCU, FE_DOCU, IM_MVTO_CNTB, IM_MVTO_RETE
    From TXMVTO_CNTB
    Where CO_EMPR = @ISCO_EMPR
    and NU_CNTB_EMPR = @INNU_CNTB_EMPR
    and CO_UNID_CNTB = @ISCO_UNID_CNTB
    and CO_OPRC_CNTB = @ISCO_OPRC_CNTB
    and NU_ANNO = @INNU_ANNO
    and NU_MESE = @INNU_MESE
    and NU_ASTO = @ISNU_ASTO
    and CO_CNTA_EMPR In (Select CO_CNTA_EMPR
		from TTIDEN_CNTA
		Where CO_EMPR = @ISCO_EMPR
                  and NU_CNTB_EMPR = @INNU_CNTB_EMPR
                  and ID_CNTA = '001')
    and IM_MVTO_RETE != 0
 Order by TI_DOCU, NU_DOCU, FE_DOCU

Open CU_TXMVTO_CNTB_Q30_1
Fetch CU_TXMVTO_CNTB_Q30_1 into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CNIM_MVTO_CNTB,
   @CNIM_MVTO_RETE

While @@Fetch_Status = 0
Begin

 -- Obtiene si lleva serie y si lleva Longitud 
  Select @VSST_SERI = ST_SERI, 
         @VNNU_LONG_SERI = NU_LONG_SERI
   From TTDOCU_CNTB
    Where TI_DOCU = @CSTI_DOCU

 -- Si lleva serie obtiene la serie y el numero de documento
  if @VSST_SERI = 'S'
   Begin
     Select @VSNU_SERI = Substring(@CSNU_DOCU, 1, @VNNU_LONG_SERI)
     Select @VSNU_DOCU = Substring(@CSNU_DOCU, @VNNU_LONG_SERI + 2, 
                         Datalength(RTrim(LTrim(@CSNU_DOCU))) - (@VNNU_LONG_SERI + 1))
   End
  Else
   Begin
     Select @VSNU_SERI = NULL
     Select @VSNU_DOCU = @CSNU_DOCU
   End

  Select @VNNU_SECU = @VNNU_SECU + 1

 -- Inserto a la tabla temporal
   Insert into #TWMVTO_CNTB_Q30(NU_SECU, TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, NU_RUCS, TI_DOCU, 
     NU_SERI, NU_DOCU, FE_DOCU, IM_MVTO_PAGO, IM_MVTO_RETE)
   Values(@VNNU_SECU, @ISTI_AUXI_EMPR, @ISCO_AUXI_EMPR, @VSNO_AUXI, @VSNU_RUCS, @CSTI_DOCU,
     @VSNU_SERI, @VSNU_DOCU, @CDFE_DOCU, @CNIM_MVTO_CNTB, @CNIM_MVTO_RETE)

  Fetch CU_TXMVTO_CNTB_Q30_1 into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CNIM_MVTO_CNTB,
     @CNIM_MVTO_RETE
End

Close CU_TXMVTO_CNTB_Q30_1
Deallocate CU_TXMVTO_CNTB_Q30_1


-- Obtener el maximo de lineas posibles a imprimir
Select @VNNU_MAXI_FILA = NU_MAXI_FILA
  from TMPARA_CONT
 Where CO_EMPR = @ISCO_EMPR

-- Cuento los registros grabados en la temporal
Select @VNNU_CONT = Count(*)
 From #TWMVTO_CNTB_Q30
 
-- Obtengo la diferencia
Select @VNNU_DIFE = @VNNU_MAXI_FILA - @VNNU_CONT

-- Si es mayor a cero quiere decir que faltan registro por llenar
If @VNNU_DIFE > 0
 While @VNNU_CONT < @VNNU_MAXI_FILA
  Begin

   Select @VNNU_SECU = @VNNU_SECU + 1

   Insert into #TWMVTO_CNTB_Q30(NU_SECU, TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, NU_RUCS, TI_DOCU, 
     NU_SERI, NU_DOCU, FE_DOCU, IM_MVTO_PAGO, IM_MVTO_RETE)
   Values(@VNNU_SECU, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)

   Select @VNNU_CONT = @VNNU_CONT + 1
  End


/*   Update   #TWMVTO_CNTB_Q30
  Set  IM_MVTO_RETE= IM_MVTO_RETE * -1 , IM_MVTO_PAGO =IM_MVTO_PAGO * -1
  Where TI_DOCU='NCR'*/


-- Select final
Select NU_SECU, TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, NU_RUCS, TI_DOCU, 
     NU_SERI, NU_DOCU, FE_DOCU, IM_MVTO_PAGO, IM_MVTO_RETE
 from #TWMVTO_CNTB_Q30
 Order by NU_SECU

Return
/*---------------------------------- Fin ----------------------------------*/




GO
